package cc.vv.baselibrary.view;

import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.List;

import cc.vv.baselibrary.R;
import cc.vv.baselibrary.util.ColorUtil;
import cc.vv.baselibrary.util.LKCommonUtil;
import cc.vv.baselibrary.util.LKLogUtil;
import cc.vv.baselibrary.global.BCDefaultPictureAndDescKey;


/**
 * 缺省view控件
 *
 * @author Chen.qi
 */

public class JniDefaultNoDataView extends RelativeLayout {

    /**
     * 上下文
     */
    private Context context;

    /**
     * 无数据的图片
     */
    private ImageView iv_jni_defaultNoData;

    /**
     * 无数据的描述
     */
    private TextView tv_jni_defaultNoData;

    /**
     * 重新加载按钮
     */
    private TextView tv_jni_defaultReload;

    /**
     * 事件接口对象
     */
    ReloadInterface reloadInterface = null;
    /**
     * 重新加载按钮背景
     */
    private RelativeLayout rl_jni_load;

    /**
     * 是否加Relayout布局
     *
     * @param context
     */
    private boolean isRelayoutView;

    public JniDefaultNoDataView(Context context) {
        super(context);
        this.context = context;
        initView();
        initViewEvent();
    }

    public JniDefaultNoDataView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        initView();
        initViewEvent();
    }

    public JniDefaultNoDataView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.context = context;
        initView();
        initViewEvent();
    }

    /**
     * 初始化布局控件
     */
    private void initView() {
        if (context == null) {
            return;
        }
        View view = LayoutInflater.from(context).inflate(R.layout.layout_default_nodata, null);
        if (view != null) {
            iv_jni_defaultNoData = (ImageView) view.findViewById(R.id.iv_jni_defaultNoData);
            tv_jni_defaultNoData = (TextView) view.findViewById(R.id.tv_jni_defaultNoData);
            tv_jni_defaultReload = (TextView) view.findViewById(R.id.tv_jni_defaultReload);
            rl_jni_load = (RelativeLayout) view.findViewById(R.id.rl_jni_load);

            view.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {

                }
            });
            this.addView(view, new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        }
    }

    /**
     * 初始化布局控件事件
     */
    private void initViewEvent() {
        //带有relayout布局的加载
        if (isRelayoutView) {
            if (rl_jni_load != null) {
                rl_jni_load.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if (reloadInterface != null) {
                            reloadInterface.reloadOnClick();
                        }
                    }
                });
            }
        } else {
            if (tv_jni_defaultReload == null) {
                return;
            }
            tv_jni_defaultReload.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (reloadInterface != null) {
                        reloadInterface.reloadOnClick();
                    }
                }
            });
        }

    }

    /**
     * isDefualt是否显示默认的加载背景
     * 设置重新加载背景图
     *
     * @param drawable
     */
    public void setLoadTextBackground(int drawable, boolean isDefualt) {
        if (tv_jni_defaultReload == null || context == null || rl_jni_load == null) {
            return;
        }
        if (isDefualt) {
            isRelayoutView = false;
            rl_jni_load.setBackgroundColor(ColorUtil.setBCColor(R.color.color_00000000));
            tv_jni_defaultReload.setBackground(ContextCompat.getDrawable(context, R.drawable.default_nodata_reload_bg));
        } else {
            isRelayoutView = true;
            rl_jni_load.setBackground(ContextCompat.getDrawable(context, drawable));
            tv_jni_defaultReload.setBackgroundColor(ColorUtil.setBCColor(R.color.color_00000000));
        }
        initViewEvent();

    }


    /**
     * 设置无数据的图片
     *
     * @param picture 图片(统一保存在BCDefaultPictureAndDescKey类中)
     */
    public void setDefaultPicture(int picture) {
        if (iv_jni_defaultNoData == null) {
            return;
        }
        iv_jni_defaultNoData.setImageResource(picture);
    }


    /**
     * 设置图片的大小
     *
     * @param width  宽度  dp
     * @param height 高度 dp
     */
    public void setDefaultPictureWidthAndHeight(int width, int height) {
        if (iv_jni_defaultNoData == null) {
            return;
        }
        ViewGroup.LayoutParams layoutParams = iv_jni_defaultNoData.getLayoutParams();
        layoutParams.width = LKCommonUtil.dip2px(width);
        layoutParams.height = LKCommonUtil.dip2px(height);
        iv_jni_defaultNoData.setLayoutParams(layoutParams);
    }

    /**
     * 设置无数据的内容
     *
     * @param content 无数据的内容
     */
    public void setDefaultTextContent(String content) {
        if (tv_jni_defaultNoData == null) {
            return;
        }
        if (TextUtils.isEmpty(content)) {
            tv_jni_defaultNoData.setVisibility(View.GONE);
        } else {
            tv_jni_defaultNoData.setText(content);
            tv_jni_defaultNoData.setVisibility(View.VISIBLE);
        }
    }

    /**
     * 设置无数据内容字体颜色
     */
    public void setDefaultTextColor(int color) {
        if (tv_jni_defaultNoData == null) {
            return;
        }
        tv_jni_defaultNoData.setTextColor(color);
    }

    /**
     * 设置无数据内容字体大小
     **/
    public void setDefaultTextSize(int size) {
        if (tv_jni_defaultNoData == null) {
            return;
        }
        tv_jni_defaultNoData.setTextSize(size);
    }


    /**
     * 设置重新加载的内容
     *
     * @param content 內容 默認是重新加載
     */
    public void setDefaultReloadContent(String content) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        if (TextUtils.isEmpty(content)) {
            tv_jni_defaultReload.setText("重新加载");
        } else {
            tv_jni_defaultReload.setText(content);
        }
    }

    /**
     * 设置重新加载的字体颜色
     */
    public void setDefaultReloadTextColor(int color) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        tv_jni_defaultReload.setTextColor(color);
    }

    /**
     * 设置重新加载的字体颜色
     */
    public void setDefaultReloadTextSize(int size) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        tv_jni_defaultReload.setTextSize(size);
    }


    /**
     * 设置重新加载显示
     * 默认影藏此控件
     *
     * @param isShow 是否显示此控件
     */
    public void setDefaultReloadShow(boolean isShow) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        if (isShow) {
            tv_jni_defaultReload.setVisibility(VISIBLE);
        } else {
            tv_jni_defaultReload.setVisibility(GONE);
        }
    }

    /**
     * 设置重新加载的颜色
     */
    public void setDefaultReloadContentColor(int color) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        tv_jni_defaultReload.setTextColor(color);
    }

    /***
     * 设置背景图色值
     */
    public void setDefaultReloadContentBackground(int background) {
        if (tv_jni_defaultReload == null) {
            return;
        }
        tv_jni_defaultReload.setBackgroundResource(background);
    }

    /**
     * 设置事件接口对象
     */
    public void setEventInterface(ReloadInterface reloadInterface) {
        this.reloadInterface = reloadInterface;
        initViewEvent();
    }

    /**
     * 设置imageview是否显示
     * @param visible
     */
    public void setDefaultPictureVisible(int visible) {
        iv_jni_defaultNoData.setVisibility(visible);
    }


    public interface ReloadInterface {
        /**
         * 重新加载点击事件
         */
        void reloadOnClick();

    }

    /** 无数据信息提示展示或隐藏方法*/
    public void notDataHintShowAndHide(int picture, String hintText, JniDefaultNoDataView jndv_not_data, final JniDefaultNoDataView.ReloadInterface reloadInterface, Object obj){
        if(jndv_not_data ==null){
            return;
        }
        boolean showOrHide = false;
        if(obj!=null){
            try {
                if(obj instanceof List){
                    if(((List)obj).size()<=0){
                        showOrHide = true;
                    }
                }
            } catch (Exception e) {
                LKLogUtil.e(e.getMessage(), e);
                showOrHide = false;
            }
        }else{
            showOrHide = true;
        }
        if(showOrHide){
            jndv_not_data.setVisibility(View.VISIBLE);
            jndv_not_data.bringToFront();
        }else{
            jndv_not_data.setVisibility(View.GONE);
        }
        if(picture == BCDefaultPictureAndDescKey.DEFAULT_NOT_NETWORK){
            if(reloadInterface!=null){
                jndv_not_data.setDefaultReloadShow(true);
                jndv_not_data.setEventInterface(new JniDefaultNoDataView.ReloadInterface() {
                    @Override
                    public void reloadOnClick() {
                        reloadInterface.reloadOnClick();
                    }
                });
            }
        }else{
            jndv_not_data.setDefaultReloadShow(false);
        }
        jndv_not_data.setDefaultPicture(picture);
        jndv_not_data.setDefaultTextContent(hintText);
    }


}
